/**
 * Created by jiachenpan on 16/11/18.
 */
// 校验手机号是否合法
export function isvalidMobile (str) {
  const valid_map = 11 && /^((13|14|15|16|17|18|19)[0-9]{1}\d{8})$/
  return valid_map.test(str)
}

// 校验邮箱是否合法
export function isvalidEmail (str) {
  // const valid_map = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
  const valid_map = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
  return valid_map.test(str)
}

/* 合法uri*/
export function validateURL (textval) {
  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

export function isExternal (path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

// 校验手机号是否合法
export function isvalidateIdNos (str) {
  const valid_map = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  return valid_map.test(str)
}


/* 是否身份证号码*/
export function isvalidateIdNo (rule, value, callback) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的身份证号码'))
    } else {
      callback()
    }
  }
}


/* 是否是企业注册号*/
export function isCompanyCode (str) {
  // const valid_map = /^(?![0-9]+$)(?![A-Z]+$)[0-9A-Z]{18}$/
  const valid_map = /^[A-Z0-9a-z]{18}$/
  return valid_map.test(str)
}


/* 是否是小数点两位以内*/
export function isTwoPoint (str) {
  // const valid_map = /^\d+(\.\d{2})?$/
  const valid_map = /^\d+(\.\d{1,2})?$/
  return valid_map.test(str)
}



/* 十位或者八位数字开头的中文验证*/
export function isNumberChinese (str) {
  const valid_map = /^[0-9]{8,10}[\u4E00-\u9FA5]+$/
  return valid_map.test(str)
}

/* 十位或者八位数字开头的中文验证 新改的*/
export function isNumberChineseNew (str) {
  const valid_map = /^[0-9]{8,10}(.)+$/
  return valid_map.test(str)
}

/* 6位数字开头的中文验证*/
export function isNumberChinese1 (str) {
  const valid_map = /^[0-9]{6}[\u4E00-\u9FA5]+$/
  return valid_map.test(str)
}

/* 必须以6位数字开头*/
export function isSixNumber (str) {
  const valid_map = /\d{6}(?!\d)/
  return valid_map.test(str)
}


/* 6为数字股票代码*/
export function isStockCode (str) {
  const valid_map = /^\d{6}$/
  return valid_map.test(str)
}


/* 是否固话*/
export function isTelephone (str) {
  const valid_map = /^0\d{2,3}-?\d{7,8}$/
  return valid_map.test(str)
}


/* 邮编校验*/
export function isZipCode (str) {
  const valid_map = /^[0-9]{6}$/
  return valid_map.test(str)
}


/* 6为数字股票代码*/
export function isNumberOnly (str) {
  const valid_map = /^[0-9]\d*$/
  return valid_map.test(str)
}


/* 全为空格*/
export function isAllSpace (str) {
  return str.trim()
}


/* 是否手机号码或者固话*/
export function validatePhoneTwo (str) {
  const valid_map = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/
  return valid_map.test(str)
}

/* 是否固话*/
export function validateTelephone (rule, value, callback) {
  const reg = /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的固话（格式：区号+号码,如010-1234567）'))
    } else {
      callback()
    }
  }
}

/* 是否手机号码*/
export function validatePhone (rule, value, callback) {
  const reg = /^[1][3,4,5,7,8][0-9]{9}$/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的电话号码'))
    } else {
      callback()
    }
  }
}

/*生成随机len位数字*/
export function randomLenNum (len, date) {
  let random = ''
  random = Math.ceil(Math.random() * 100000000000000).toString().substr(0, typeof len === 'number' ? len : 4)
  if (date) random = random + Date.now()
  return random
}


/* 判断是否为空*/
export function validatenull (val) {
  if (val instanceof Array) {
    if (val.length === 0) return true
  } else if (val instanceof Object) {
    if (JSON.stringify(val) === '{}') return true
  } else {
    if (val === 'null' || val === null || val === 'undefined' || val === undefined || val === '') return true
    return false
  }
  return false
};


export function changeLine (str, len) {
  function lenStat (str) {
    function isChinese (str) { //判断是不是中文
      var reCh = /[u00-uff]/;
      return !reCh.test(str);
    }
    var strlen = 0; //初始定义长度为0
    var text = str.trim();
    for (var i = 0; i < text.length; i++) {
      if (isChinese(text.charAt(i)) == true) {
        strlen = strlen + 2; //中文为2个字符
      } else {
        strlen = strlen + 1; //英文一个字符
      }
    }
    return strlen;
  }
  var strlen = lenStat(str);
  var strs = '';
  for (var i = 0; i < strlen; i = i + len) {
    strs += str.substring(i, i + len) + '\n';
  }
  return strs;
}

/* 是否数字*/
export function validateNumber (rule, value, callback) {
  // const reg = /^([0-9]+\.?[0-9]*|-[0-9]+\.?[0-9]*)$/
  const reg = /^([1-9]\d*|[0]{1,1})$/ //正整数和零
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正整数'))
    } else {
      callback()
    }
  }
}

/* 是否表单校验邮箱*/
export function validateEmail (rule, value, callback) {
  const reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的邮箱'))
    } else {
      callback()
    }
  }
}

/* 是否银行账号校验*/
export function validateBank (rule, value, callback) {
  // const reg = /^([1-9]{1})(\d{14}|\d{18})$/
  const reg = /^([1-9]{1}\d+)$/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的银行账号'))
    } else {
      callback()
    }
  }
}

/* 是否小数点两位以内校验*/
export function validatePointNum (rule, value, callback) {
  // const reg = /^([1-9]{1})(\d{14}|\d{18})$/
  const reg = /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('小数点最多保留两位'))
    } else {
      callback()
    }
  }
}
